home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / os2 / adaptor.zip / ADAPT.ZIP / adaptor / examples / laplace / graphic.f < prev    next >
Text File  |  1993-09-28  |  2KB  |  62 lines

  1.       PROGRAM LAPLACE
  2.       REAL F(:,:), DF(:,:)
  3.       REAL HF(:,:)
  4.       INTEGER BILD (:,:), HOSTBILD(:,:)
  5. cmf$  layout hostbild (:host)
  6.       LOGICAL CMASK (:,:)
  7.       INTEGER MAXX, MAXY
  8.       REAL FMAX
  9.       INTEGER ITER, K
  10. c     read in sizes 
  11. c
  12.       PRINT *,'MAXX = (z.B. 64) '
  13.       READ *,MAXX
  14.       PRINT *,'MAXY = (z.B. 64) '
  15.       READ *,MAXY
  16.       ALLOCATE (F(MAXX,MAXY), DF(1:MAXX,MAXY))
  17.       ALLOCATE (HF(MAXX,1:MAXY))
  18.       ALLOCATE (CMASK(MAXX,1:MAXY))
  19.       allocate (bild(maxx,maxy), hostbild(maxx,maxy))
  20.       call x_display_init (maxx, maxy)
  21. C
  22.       CMASK = .FALSE.
  23.       CMASK (2:MAXX-1,2:MAXY-1) = .TRUE.
  24.       F = 2.
  25.       F(:,MAXY) = 1.
  26.       WHERE (CMASK)
  27.           F = 0.0
  28.       ENDWHERE
  29.       ITER = 0
  30.       FMAX = 1
  31.       DO WHILE (FMAX .gt. 0.001)
  32.         do k = 1, 10
  33.          ITER = ITER + 1
  34.          HF = CSHIFT (F,1,1)
  35.          DF = CSHIFT (F,1,-1)
  36.          HF = HF + DF
  37.          DF = CSHIFT (F,2,1)
  38.          HF = HF + DF
  39.          DF = CSHIFT (F,2,-1)
  40.          HF = (HF + DF) * 0.25
  41.          DF = 0
  42.          WHERE (CMASK)
  43.             DF = HF - F
  44.             F  = F + DF
  45.          ENDWHERE
  46.         end do
  47.         bild = f * 128.0
  48.         hostbild = bild
  49.         call x_show_bild (hostbild)
  50.         DF = ABS(DF)
  51.         FMAX = MAXVAL (DF)
  52.         PRINT *,'Iteration ',ITER,'  Max = ',FMAX
  53.       END DO
  54.       PRINT *, ITER, ' Iterationen benoetigt'
  55.       read *, iter
  56.       call x_display_exit ()
  57.       deallocate (hostbild, bild)
  58.       deallocate (cmask, hf, df, f)
  59.       END 
  60.  
  61.